home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 June / PCWorld_2007-06_cd.bin / temacd / wikipad / WikidPad-1.9beta2.exe / {app} / extensions / autoNew.py next >
Text File  |  2007-02-02  |  2KB  |  68 lines

  1. import re
  2.  
  3.  
  4. # Example plugin for EditorFunctions type plugins
  5. #
  6. # The plugin allows to install new menu items and toolbar items and register a
  7. # a function with each that is called. The function must accept one argument which
  8. # is the instance of PersonalWikiFrame providing access to the editor and the data store.
  9. #
  10. # To register a menu item implement the function describeMenuItem to return a
  11. # sequence of tuples at least containing the callback function, the item string
  12. # and an item tooltip (see below for details).
  13. #
  14. # To register a toolbar item implement the function describeToolbarItem to return
  15. # a tuple at least containing the callback function, item label, tooltip and icon.
  16. #
  17. # both register functions must accept one argument which is again the
  18. # PersonalWikiFrame instance
  19.  
  20. # descriptor for EditorFunctions plugin type
  21. WIKIDPAD_PLUGIN = (("MenuFunctions",1),)
  22.  
  23. def describeMenuItems(wiki):
  24.     """
  25.     wiki -- Calling PersonalWikiFrame
  26.     Returns a sequence of tuples to describe the menu items, where each must
  27.     contain (in this order):
  28.         - callback function
  29.         - menu item string
  30.         - menu item description (string to show in status bar)
  31.     It can contain the following additional items (in this order), each of
  32.     them can be replaced by None:
  33.         - icon descriptor (see below, if no icon found, it won't show one)
  34.         - menu item id.
  35.  
  36.     The  callback function  must take 2 parameters:
  37.         wiki - Calling PersonalWikiFrame
  38.         evt - wxCommandEvent
  39.  
  40.     An  icon descriptor  can be one of the following:
  41.         - a wxBitmap object
  42.         - the filename of a bitmap (if file not found, no icon is used)
  43.         - a tuple of filenames, first existing file is used
  44.     """
  45.     global nextNumber
  46.     
  47.     return ((autoNew, "Create new page\tShift-Ctrl-N", "Create new page"),)
  48.  
  49.  
  50. _testRE = re.compile(ur"^New[0-9]{6}$")
  51.  
  52.  
  53. def autoNew(wiki, evt):
  54.     wiki.saveAllDocPages()
  55.     candidates = wiki.wikiData.getWikiWordsStartingWith(u"New",
  56.             includeAliases=True)
  57.             
  58.     candidates = filter(lambda w: _testRE.match(w), candidates)
  59.     numbers = map(lambda w: int(w[3:]), candidates)
  60.  
  61.     if len(numbers) == 0:
  62.         nextNumber = 1
  63.     else:
  64.         nextNumber = max(numbers) + 1
  65.     wiki.openWikiPage(u"New%06i" % nextNumber)
  66.     wiki.getActiveEditor().SetFocus()
  67.  
  68.